<?php
	class UsuariosController extends AppController {
		var $name = 'Usuarios';

		function beforeFilter() {
			parent::beforeFilter();
			//$this -> Auth -> allowedActions = array('logout',
			//	'login');
			$this->Auth->allowedActions = array('*');
		}

		function index() {
			// $this->Usuario->recursive = 0;
			// $this->set('usuarios', $this->paginate());
			// $grupo = $this -> Session -> read('Auth.Usuario.grupo_id');
			//$grupo = $this -> Usuario -> Grupo -> findById($this -> Auth->user('grupo_id'));

			switch ($this -> Auth -> user('grupo_id')) {
				# Administradores
				case '1' :
					$this -> redirect(array('action' => 'index',
						'admin' => 1));
					break;
				# Supervisores
				case '2' :
					$this -> redirect(array('action' => 'index',
						'supervisor' => 1));
					break;
				# Profesores
				case '3' :
					$this -> redirect(array('controller' => 'profesores',
						'action' => 'index'));
					break;
				# Alumnos
				case '4' :
					$this -> redirect(array('controller' => 'alumnos',
						'action' => 'index'));
					break;
				# Error
				default :
					$this -> Session -> setFlash(__('Hubo un error, intentelo nuevamente', true));
					$this -> redirect(array('controller' => 'usuarios',
						'action' => 'login'));
					break;
			}
		}

		/**
		 * El AuthComponent proporciona la funcionalidad necesaria
		 * para el acceso (login), por lo que se puede dejar esta función en blanco.
		 */
		function login() {
		}

		function logout() {
			$nombre_usuario = $this -> Session -> read('Auth.Usuario.username');
			$this -> Session -> setFlash('Hasta luego ' . $nombre_usuario . '... ¡Vuelve pronto!', 'flash_success');
			$this -> redirect($this -> Auth -> logout());
		}

		function view($id = null) {
			if(!$id) {
				$this -> Session -> setFlash(__('Invalid usuario', true));
				$this -> redirect(array('action' => 'index'));
			}
			$this -> set('usuario', $this -> Usuario -> read(null, $id));
		}

		function admin_index() {
			$this -> Usuario -> recursive = 0;
			$this -> set('usuarios', $this -> paginate());
			$this -> set('usuario', $this -> Usuario -> find());
		}

		function admin_add() {
			if(!empty($this -> data)) {
				$this -> Usuario -> create();

				// verifico que la confirmación de la contraseña no esté vacía para luego encriptarla.
				if($this -> data['Usuario']['password2'] != '') {
					// se encripta la confirmación para hacer uso de la validación de igual,
					// ya que el campo contraseña se encripta por defecto.
					$this -> data['Usuario']['password2'] = $this -> Auth -> password($this -> data['Usuario']['password2']);

					if($this -> Usuario -> save($this -> data)) {
						$this -> Session -> setFlash(__('The usuario has been saved', true));
						$this -> redirect(array('action' => 'index'));
					} else {
						$this -> Session -> setFlash(__('The usuario could not be saved. Please, try again.', true));
					}
				}
			}
			$grupos = $this -> Usuario -> Grupo -> find('list');
			$this -> set(compact('grupos'));
		}

		function admin_edit($id = null) {
			if(!$id && empty($this -> data)) {
				$this -> Session -> setFlash(__('Invalid usuario', true));
				$this -> redirect(array('action' => 'index'));
			}
			if(!empty($this -> data)) {
				if($this -> Usuario -> save($this -> data)) {
					$this -> Session -> setFlash(__('The usuario has been saved', true));
					$this -> redirect(array('action' => 'index'));
				} else {
					$this -> Session -> setFlash(__('The usuario could not be saved. Please, try again.', true));
				}
			}
			if(empty($this -> data)) {
				$this -> data = $this -> Usuario -> read(null, $id);
			}
			$grupos = $this -> Usuario -> Grupo -> find('list');
			$this -> set(compact('grupos'));
		}

		function admin_delete($id = null) {
			if(!$id) {
				$this -> Session -> setFlash(__('Invalid id for usuario', true));
				$this -> redirect(array('action' => 'index'));
			}
			if($this -> Usuario -> delete($id)) {
				$this -> Session -> setFlash(__('Usuario deleted', true));
				$this -> redirect(array('action' => 'index'));
			}
			$this -> Session -> setFlash(__('Usuario was not deleted', true));
			$this -> redirect(array('action' => 'index'));
		}

	}
?>